package com.tedu.api.io;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import java.io.*;
import java.nio.Buffer;
import java.util.Scanner;

/**
 * 案例：做一个记事本程序
 * 需求：程序开始之后，要求用户【从控制台】输入文件名--->假设： a.txt
 *      然后，针对文件进行读写操作
 *      用户可以在【控制台】输入一行行的文本内容，要求：写入 a.txt文件中
 *      判断，如果用户输入"推出/exit"，程序结束
 *      a.txt直接出现 API 项目下 保存对应文本的内容
 * 要求：1.标准流--结合异常处理
 *      2.输出流--->输入流【读】   单元测试 testNote()
 */
public class Note {
    public static void main(String[] args)  {

        //1.从控制台输入：a.txt 文本
       /* Scanner input = new Scanner(System.in);
        System.out.println("请输入文件名：");
        String text = input.nextLine();*/     //获取一行文本
        // System.out.println(text);打桩
        //2.流---写
        FileOutputStream fos=null;
        OutputStreamWriter osw=null;
        BufferedWriter bw=null;
        PrintWriter pw=null;
        // try/catch/finally适配IO 捕获异常--关闭流
        try {
            Scanner input = new Scanner(System.in);
            System.out.println("请输入文件名：");
            String text = input.nextLine();

            fos=new FileOutputStream("note.txt");
            osw=new OutputStreamWriter(fos);
            bw= new BufferedWriter(osw);
            pw=new PrintWriter(bw);
            //3.1 定义字符串变量--赋值为null，接收用户每次输入“文本内容”
            String line = null;
            //3.2 【补充：考虑用户体验】提示内容
            System.out.println("请开始输入内容【'退出'程序结束】:");
            //3.2 一直写入
            while (true) {
                line = input.nextLine();    //从控制台获取一行文本
                //3.3判断条件---判断line是否等于 退出 或者exit 程序结束
                if (line.equals("退出") || line.equals("exit")) {
                    break;//跳出方法体
                }
                //3.4PW字符输出流---写出
                pw.println(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            System.out.println("拜拜，请查看 API 文件夹生成文件！！");

            if(pw!=null)
                //3.6关闭高级流
                pw.close();
        }

       /* FileOutputStream fos = new FileOutputStream(text);
        OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF8"); //转换流
        BufferedWriter bw = new BufferedWriter(osw); //缓冲输出流--加速字符串传输
        PrintWriter pw = new PrintWriter(bw);
        //3.假设 a.txt  写入文件----一直写入，知道写出的文件"推出/exit"
        //3.1 定义字符串变量---赋值为null，接收用户每次输入"文本内容"
        String line = null;
        //3.2【考虑到用户体验：补充】提示内容
        System.out.println("请开始输入内容【'退出'程序结束】：");
        //3.2 一直写入
        while (true) {
            line = input.nextLine();    //从控制台获取一行文本
            //3.3判断条件---判断line是否等于 退出 或者exit 程序结束
            if (line.equals("退出") || line.equals("exit")) {
                break;//跳出方法体
            }
            //3.4PW字符输出流---写出
            pw.println(line);
        }
        //3.5【用户体验】拜拜
        System.out.println("拜拜 请查看API文件夹生成文件");
        //3.6关闭高级流
        // pw.close();*/

    }
}

